<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /*  
         有这样一个 字符串 " 1233fddfd&3434fdsaff&454545&4545444rgrggfgdg&6564gdsgs "，
         要求: 将 字符串去重，并去掉特殊字符串，按照 数字在前面，字母在后面的顺序 显示
        */
       let str = '1233fddfd&3434fdsaff&454545&4545444rgrggfgdg&6564gdsgs'

       function foo(str) {
           let a = str.split("&").join("").split("")  // 去掉 特殊字符
        //    console.log(a)
        //    let b = [...new Set(a)]  // 数组 去重

            // let b = a.filter((item, index) => {  // filter 去重
            //     return a.indexOf(item) === index  //数组包含item的值则返回对应的下标
            // })

            // let b = []  // indexOf + for 去重 
            // for(let i=0; i<a.length; i++) {
            //     if(b.indexOf(a[i]) == -1) {
            //         b.push(a[i])
            //     }
            // }
            let b = a.reduce((a, b) => {   // 去和 方法 去重
                 a.indexOf(b) === -1 ? a.push(b) : null 
                 return a
            }, [])

        //    console.log(b)
            let newB = []
           for(let i=0; i<b.length; i++) {
               let item = b[i].charCodeAt(0)
            //    console.log("**", b[i], i, item)
               newB.push({name: b[i], num: item})
           }
           if(b.length === newB.length) {  
            //    for(let i=1; i<newB.length; i++) {  // 双重for 冒泡
            //        for(let j=0; j<newB.length-i; j++) {
            //         if(newB[j].num > newB[j+1].num) {
            //             let newp = newB[j]
            //             newB[j] = newB[j+1]
            //             newB[j+1] = newp
            //         }
            //        }
            //    }

                newB.sort((a,b) => {   // 冒泡排序
                    return a.num - b.num
                })

            }

            let newStr = ''
            for(let i=0; i<newB.length; i++) {
                newStr += newB[i].name
            }
            // console.log("str", newStr)

            // console.log("---", newB)

            return newStr
        }

       console.log(foo(str))
    </script>
</body>
</html>